
from django.conf import settings
from django.shortcuts import render,HttpResponse

from utils.redis_ceshi.redis_ceshi import value
from utils.tencent.sms import send_sms_single,send_sms_multi
import random
from django import forms
from tracer_01 import models
from django.core.validators import RegexValidator ## 正则表达式使用的模块
from django.core.exceptions import ValidationError ## 正则表达式校验错误的模块
from django_redis import get_redis_connection ## 使用django-redis

#Create your views here.
def index(request):

    return HttpResponse('........')
def send_sms(request):
    """ 发送短信
        根据url中tpl参数的数据来区分用户是登陆短信还是注册短信，来调用对应的模版
            url中?tpl=login时：让调用函数中的template_id=1400957966
            url中?tpl=register时：让调用函数中的template_id=4563563
    """
    # 获取url中的参数tpl
    tpl = request.GET.get('tpl')
    # 根据获取的tpl去local_settings的TENCENT_SMS_TEMPLATE中查找对应的字典的键对应的数据
    template_id = settings.TENCENT_SMS_TEMPLATE.get(tpl)
    code = random.randint(1000,9999)
    res = send_sms_single('13877777777',template_id,[code,])
    print(res)
    return HttpResponse('成功')

# 创建注册的modelform
class RegisterModelForm(forms.ModelForm):
    mobile_phone = forms.CharField(
        label='手机号码',
        validators=[RegexValidator(r'^(1[3|4|5|6|7|8|9])\d{9}$','手机号格式错误')]
        ) ## 重写手机号码字段，在它生成的输入框中输入数据时会进行validators=[]正则表达式的校验
    password = forms.CharField(label='密码',widget=forms.PasswordInput()) ## 利用插件将密码框改成密码类型的输入框，输入数据时将显示...或者***
    # 利用参数attrs重写样式。当用下面的__init__方法重写样式时，就不需要在这里添加了
    confirm_password = forms.CharField(
        label='确认密码',
        widget=forms.PasswordInput(attrs={'class':'form-control','placeholder':'确认密码'})
        )## 数据表中有这个字段将重写，没有这个字段将新增这个字段。
    code = forms.CharField(
        label='验证码',
        widget=forms.PasswordInput(attrs={'class': 'form-control', 'placeholder': '确认密码'})
        )

    class Meta:
        model = models.UserInfo
        fields = '__all__'
    ## 判断是否有样式，有的话就重写class和placeholder，没有的话就直接覆盖添加
    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        for name,field in self.fields.items():
            if field.widget:
                field.widget.attrs['class'] = 'form-control'
                field.widget.attrs['placeholder'] = field.label
            else:
                field.widget.attrs={'class': 'form-control', 'placeholder': field.label}

def register(request):
    form = RegisterModelForm()
    return render(request, 'tracer_01/register.html', {'form':form})

# 使用django-redis来获取redis中存放的数据
def redis_server(request):
    # 利用django-redis去连接池中，或取一个链接
    conn = get_redis_connection("default")
    conn.set("nickname","admin",ex=10)
    value = conn.get("nickname")
    return HttpResponse('获取成功')


















